/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.unicon.autoservicio.view.bean;

import com.unicon.autoservicio.bean.DocumentoPercepcionViewBean;
import com.unicon.autoservicio.dao.FacturacionDAO;
import com.unicon.sdc.ds.ws.DocumentoPercepcionBean;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.ValueChangeEvent;
import javax.xml.datatype.DatatypeConfigurationException;

/** 
 *
 * @author jcabrera
 */
public class ConsultaDocumentoPercepcionBean extends BaseManageBean {

    private Date fechaDesde;
    private Date fechaHasta;
    private String serieDocumentoVenta;
    private String numeroDocumentoVenta;
    private String numeroAcuerdo;
    private String serieComprobante;
    private String numeroComprobante;
    private String exportarDocumentosPdf;
    private String mensajeDocumentoPercecpcion;
    private List<DocumentoPercepcionViewBean> comprobantes;
    private List<DocumentoPercepcionBean> comprobantesPadre;

    public ConsultaDocumentoPercepcionBean() {
        numeroDocumentoVenta = "";
        numeroAcuerdo = "";
        exportarDocumentosPdf = "";
        mensajeDocumentoPercecpcion = "";
        comprobantes = new ArrayList<DocumentoPercepcionViewBean>();

        fechaDesde = new Date(System.currentTimeMillis());
        fechaHasta = new Date(System.currentTimeMillis());
    }

    public boolean selectedCheck(ValueChangeEvent e) {

        if (!e.getPhaseId().equals(PhaseId.INVOKE_APPLICATION)) {


            e.setPhaseId(PhaseId.INVOKE_APPLICATION);
            e.queue();
            return true;
        }

        if (logger.isDebugEnabled()) {
        }
        for (DocumentoPercepcionViewBean documento : comprobantes) {


            documento.setSelected(isAllChecks());


        }
        return true;
    }

    public String getExportarDocumentosPdf() {

        boolean fldocumento = false;
        StringBuffer lista = new StringBuffer();
        setMensajeDocumentoPercecpcion("");

        if (comprobantes.size() > 0) {

            for (DocumentoPercepcionViewBean comprobante : comprobantes) {
                if (comprobante.isSelected()) {

                    lista.append(comprobante.getSecuenciaDocumento()).append(",");
                    fldocumento = true;
                }
            }

            if (!fldocumento) {

              //  setMensajeDocumentoPercecpcion("¡Debe seleccionar algún documento. Por favor, vuelva a seleccionar!");
                return "";
            }

            FacesContext fc = FacesContext.getCurrentInstance();

          
            return fc.getExternalContext().getRequestContextPath() + "/ExportarPDF?reporte=exportarListaComprobantesPercecpion&lista=" + lista.toString();

        } else {


            return "";

        }
    }

    /**
     * @return the fechaDesde
     */
    public Date getFechaDesde() {
        return fechaDesde;
    }

    /**
     * @param fechaDesde the fechaDesde to set
     */
    public void setFechaDesde(Date fechaDesde) {
        this.fechaDesde = fechaDesde;
    }

    /**
     * @return the fechaHasta
     */
    public Date getFechaHasta() {
        return fechaHasta;
    }

    /**
     * @param fechaHasta the fechaHasta to set
     */
    public void setFechaHasta(Date fechaHasta) {
        this.fechaHasta = fechaHasta;
    }

    /**
     * @return the numeroDocumentoVenta
     */
    public String getNumeroDocumentoVenta() {
        return numeroDocumentoVenta;
    }

    /**
     * @param numeroDocumentoVenta the numeroDocumentoVenta to set
     */
    public void setNumeroDocumentoVenta(String numeroDocumentoVenta) {
        this.numeroDocumentoVenta = numeroDocumentoVenta;
    }

    /**
     * @return the numeroAcuerdo
     */
    public String getNumeroAcuerdo() {
        return numeroAcuerdo;
    }

    /**
     * @param numeroAcuerdo the numeroAcuerdo to set
     */
    public void setNumeroAcuerdo(String numeroAcuerdo) {
        this.numeroAcuerdo = numeroAcuerdo;
    }

    /**
     * @param exportarDocumentosPdf the exportarDocumentosPdf to set
     */
    public void setExportarDocumentosPdf(String exportarDocumentosPdf) {
        this.exportarDocumentosPdf = exportarDocumentosPdf;
    }

    /**
     * @return the mensajeDocumentoPercecpcion
     */
    public String getMensajeDocumentoPercecpcion() {
        return mensajeDocumentoPercecpcion;
    }

    /**
     * @param mensajeDocumentoPercecpcion the mensajeDocumentoPercecpcion to set
     */
    public void setMensajeDocumentoPercecpcion(String mensajeDocumentoPercecpcion) {
        this.mensajeDocumentoPercecpcion = mensajeDocumentoPercecpcion;
    }

    public boolean btnBuscarActionPerformed(ActionEvent event) throws DatatypeConfigurationException {
        setMensajeDocumentoPercecpcion("");
        comprobantes.clear();
        if (!event.getPhaseId().equals(PhaseId.INVOKE_APPLICATION)) {
            event.setPhaseId(PhaseId.INVOKE_APPLICATION);
            event.queue();
            return true;
        }

        if (getFechaDesde().compareTo(getFechaHasta()) > 0) {


            setMensajeDocumentoPercecpcion("La fecha Desde debe ser menor a la fecha Hasta.");
            return true;
        }



        UsuarioBean usuarioBean = getSessionUser();

        FacturacionDAO facturacionDAO = new FacturacionDAO();


        comprobantesPadre = facturacionDAO.obtenerDocumentosDePercepcioon(fechaDesde, fechaHasta, numeroAcuerdo, serieDocumentoVenta, numeroDocumentoVenta, serieComprobante, numeroComprobante, usuarioBean.getCodigoCliente(), usuarioBean.getUsuario(), usuarioBean.getClave());



        for (DocumentoPercepcionBean d : comprobantesPadre) {

        
            DocumentoPercepcionViewBean h = new DocumentoPercepcionViewBean(d);
            comprobantes.add(h);

        }



        return true;
    }

    /**
     * @return the numeroComprobante
     */
    public String getNumeroComprobante() {
        return numeroComprobante;
    }

    /**
     * @param numeroComprobante the numeroComprobante to set
     */
    public void setNumeroComprobante(String numeroComprobante) {
        this.numeroComprobante = numeroComprobante;
    }

    /**
     * @return the comprobantes
     */
    public List<DocumentoPercepcionViewBean> getComprobantes() {
        return comprobantes;
    }

    /**
     * @param comprobantes the comprobantes to set
     */
    public void setComprobantes(List<DocumentoPercepcionViewBean> comprobantes) {
        this.comprobantes = comprobantes;
    }

    /**
     * @return the serieDocumentoVenta
     */
    public String getSerieDocumentoVenta() {
        return serieDocumentoVenta;
    }

    /**
     * @param serieDocumentoVenta the serieDocumentoVenta to set
     */
    public void setSerieDocumentoVenta(String serieDocumentoVenta) {
        this.serieDocumentoVenta = serieDocumentoVenta;
    }

    /**
     * @return the serieComprobante
     */
    public String getSerieComprobante() {
        return serieComprobante;
    }

    /**
     * @param serieComprobante the serieComprobante to set
     */
    public void setSerieComprobante(String serieComprobante) {
        this.serieComprobante = serieComprobante;
    }
}
